export default {
    props:{
        option:{
            type:[String,Array,Object],
            default:[]
        },
        optionSplit:{
            type:String,
            default:','
        },
    },
    data(){
        return {
            optionsList:[]
        }
    },
    watch:{
        option:{
            handler(val){
                
                if (typeof val =='string'){
                    let list =  val.split(this.optionSplit);
                    list.forEach(item=>{
                        this.optionsList.push({
                            value:item,
                            label:item
                        });
                    })
                    return;
                }


                if (val instanceof Array){
                    
                    val.forEach(item=>{
                        
                        if (typeof item =='string'){
                            this.optionsList.push({
                                value:item,
                                label:item
                            });
                        }

                        if (typeof item =='object'){
                            this.optionsList.push({
                                value:item['value']??'',
                                label:item['label']??'',
                                disabled:item['disabled']??false,
                                icon:item['icon']??''
                            });
                        }

                        
                    })

                     return ;
                }

                if (typeof val =='object'){
                    Object.keys(val).forEach(key=>{

                        let item = val[key];

                        if (typeof item =='string'){
                            this.optionsList.push({
                                value:key,
                                label:item
                            });
                        }

                        if (typeof item =='object'){
                            this.optionsList.push({
                                value:key,
                                label:item['label']??'',
                                icon:item['icon']??''
                            });
                        }
                    })

                    return;
                }
            },
            immediate:true
        }
    }
}